from pywebio.input import input, input_group, radio, TEXT, select, input_update
from pywebio.output import put_text, put_button, put_buttons, put_scope, use_scope
from pywebio import start_server, config
from jinja2_module import java_jinja2, vue_jinja2
from java_template import java_template

config(title='softwise deploy')


def input_update_ingress(status):
    input_update('domain_test', readonly=(status is False))
    input_update('prefix_test', readonly=(status is False))
    input_update('domain_prod', readonly=(status is False))
    input_update('prefix_prod', readonly=(status is False))


def form_generate():
    inputs = input_group(label='部署参数',
                         inputs=[
                             select(label='发布应用', name='deploy_app', required=True, options=[
                                 {'label': 'java应用', 'value': 'java'},
                                 {'label': 'vue应用', 'value': 'vue'},
                             ]),
                             input(label='钉钉通知信息', name='ding_msg', placeholder='请输入钉钉通知消息', required=True, type=TEXT),
                             input(label='docker镜像名', name='docker_name', required=True, type=TEXT, ),
                             # radio(label='是否需要额外Tag名', name='extra_tag_flag', inline=True, required=True,
                             #       options=[{'是', , '否'], value=[True, False], ),
                             radio(label='是否需要额外Tag名', name='extra_tag_flag', inline=True, required=True,
                                   options=[{'label': '是', 'value': True},
                                            {'label': '否', 'value': False, 'selected': True}],
                                   onchange=lambda status: input_update('extra_tag_name', readonly=(status==False))),
                             input(label='额外的Tag', name='extra_tag_name', readonly=True),
                             input(label='工作负载名', name='deploy_name', required=True, rtype=TEXT),
                             input(label='名称空间', name='namespace', required=True, type=TEXT),
                             select(label='发布环境', name='deploy_env', required=True, options=[
                                 {'label': 'softwise阿里云生产环境', 'value': 'aliyun'},
                                 {'label': '工会生产环境', 'value': 'gonghui'},
                                 {'label': '防疫生产环境', 'value': 'ntepp'},
                             ]),

                             radio(label='是否需要入口', name='extra_ingress_flag', inline=True, require=True,
                                   options=[{'label': '是', 'value': True},
                                            {'label': '否', 'value': False, 'selected': True}],
                                   onchange=input_update_ingress),
                             input(label='测试环境域名', name='domain_test', other_html_attrs=[{'display': 'none'}],
                                   readonly=True),
                             input(label='测试路径前缀', name='prefix_test', placeholder='/view/{终端}/{项目名}',
                                   readonly=True),
                             input(label='生产环境域名', name='domain_prod',
                                   readonly=True),
                             input(label='生产路径前缀', name='prefix_prod', placeholder='/view/{终端}/{项目名}',
                                   readonly=True),
                             # input(label='Nacos配置文件组', name='nacos_group', value='DEFAULT_GROUP'),
                         ])
    if inputs['deploy_app'] == 'java':
        java_template(ding_msg=inputs['ding_msg'])
    if inputs['deploy_app'] == 'vue':
        vue_jinja2(inputs)


if __name__ == '__main__':
    start_server(form_generate, port=8090)

